কম্পিউটার সায়েন্স লেবেলটি সহ পোস্টগুলি দেখানো হচ্ছে৷ সকল পোস্ট দেখান

GIMPS: মার্জেন প্রাইমের খোঁজে একদল মানুষ


১.

“আমরা একা একা খুব কম কিছু করতে পারি, অনেকজন মিলে আবার খুব বেশি কিছু করতে পারি”

- হেলেন কেলার

আমরা একা একা যে কাজটা করতে পারি, অনেকজন মিলে একসাথে সেই কাজটা করা সত্যিই কি আরও সহজ হতো না? যেমন ধরা যাক আমাদের খুব বড় (এবং জটিল) একটা গাণিতিক হিসেব করা দরকার। আমরা কী করতে পারি?

একটা উপায় হচ্ছে কিংবদন্তীর কোন একজন গণিতবিদকে ধরে আনা, এবং তাকে দিয়ে হিসেবটা করাতে থাকা। দিন যায় রাত যায়, গণিতবিদ হিসেব করেই যাবেন। তার খাওয়া-দাওয়ার দায়িত্ব আমাদের, তার কাজ কেবল হিসেব করে যাওয়া। কিন্তু এটা কি খুব ভালো একটা উপায় হবে?

প্রথমত একজন গণিতবিদ নিঃসন্দেহে আমাদের থেকে দ্রুত গাণিতিক হিসেব করতে পারবে, কিন্তু একটানা একটা কাজ করতে গেলে ক্লান্তি আসবেই। আর হিসেব করা যতটা না সৃজনশীল কাজ, তার থেকে অনেকগুণ বেশি পরিশ্রমের কাজ। সেই ক্লান্তি দূর আমরা কেমন করে করবো?

তবে আরেকটা উপায় আছে। আমরা একজন গণিতবিদকে ধরে না এনে শত শত লোককে জিজ্ঞেস করলাম যার যখন খুশি আমাদের সাহায্য করতে। বড় হিসেবটা তখন সবাই মিলে শেষ করার চেষ্টা করতে শুরু করলো। একজন অর্গানাইজার দরকার যে কার কী করতে হবে সেটা ঠিক করে দিতে পারবে, বাকিটা ভলান্টিয়ারদের কাজ। যার যখন খুশি আসছে, যতক্ষন খুশি কাজ করে যাচ্ছে। কারও কোন ক্লান্তি লাগবে না, কারও উপর ভয়ানক চাপও তখন পড়বে না। আমি যখন স্কুলে পড়তাম তখন একটা অঙ্ক ছিলো এরকম, “একজন একটা সমস্যা অমুক সময়ে সমাধান করতে পারে, আরেকজন একটা সমস্যা তমুক সময়ে সমাধান করতে পারে। দুজনের একসাথে সমস্যাটা সমাধান করতে কত সময় লাগবে?” এক দিক দিয়ে প্রশ্নটা হাস্যকর। একজন এন্ড্রু উইলস এর ফার্মার লাস্ট থিওরেম প্রমাণ করতে যদি আট বছর লাগে, আটজন এন্ড্রু উইলস কি সেটা সত্যিই এক বছরে করতে পারবে(আটজন কোথা থেকে আসবে সেটা অন্য বিষয়, কিন্তু আমরা কল্পনা করে নিতে পারি তার কাছে সায়েন্স ফ্যান্টাসির কোন ক্লোনিং মেশিন আছে। মেশিনে এন্ড্রু উইলস ঢুকালে টপাটপ পাঁচ-দশজন কপি বের হয়ে আসে।)? মনে হয় না। কিন্তু যদি এমন একটা উপায় বের করা যায় যেখানে একটা সমস্যাকে ছোট ছোট সমস্যায় ভাগ করে ফেলা হবে এবং সবগুলো সমাধান এক করলে পুরো সমাধানটা বের হয়ে আসবে, তখন? হ্যা, তখন কিন্তু সত্যিই অনেকজন মিলে কাজটা করে ফেলতে পারবে। দরকার শুধু সমাধানকারীদের মাঝে সামান্য যোগাযোগের উপায়।

সুপার কম্পিউটার বললেই আমাদের সামনে বিশাল বড় কোন কম্পিউটারের ছবি ভেসে উঠে, যাতে দানবাকার এক প্রসেসর রাতভর কাজ করে যাচ্ছে। অবশ্য সেই প্রসেসরের দরকার প্রচন্ড শক্তি, এবং একটু একটু পর যখন গরম হয়ে যাবে তখন ঠান্ডা রাখার জন্য কুলিং সিস্টেম। কিন্তু আমরা যদি কোন জায়গায় অনেকগুলো কম্পিউটার কিংবা প্রসেসর বসিয়ে সেগুলোকে কোন লোকাল নেটওয়ার্কের মাধ্যমে যুক্ত করে দেই? Parallel computing সুপার কম্পিউটার বানানোর নতুন উপায় আমাদের বের করে দিয়েছে।

আচ্ছা এবার আরও বড় পরিসরে চিন্তা করা যাক। ধরা যাক হাজার হাজার কম্পিউটারের কথা যারা একে অপরের সাথে কোন নেটওয়ার্কের মাধ্যমে যুক্ত। হতে পারে সেটা ইন্টারনেট, হতে পারে অন্য কোন নেটওয়ার্ক। সবগুলো কম্পিউটারের সারাদিন একসাথে চলারও প্রয়োজন নেই, যেটা যখন খুশি তখন চলতে পারে। সারা পৃথিবীতে ছড়িয়ে ছিটিয়ে থাকা হাজার হাজার “স্বেচ্ছাসেবক” কম্পিউটারকে যদি এভাবে এক করে ফেলা যায় তাহলে কী ভয়ানক ব্যাপার হতে পারে সেটা কল্পনা করতে পারেন? এই ভয়ানক ব্যাপারটির নাম হচ্ছে Quasi-opportunistic supercomputing।

পৃথিবীতে এই কম্পিউটিং ব্যবহার করে এমন বেশ কিছু সিস্টেম আছে। তাদের একটি হচ্ছে ক্যালিফোর্নিয়া ইউনিভার্সিটির BOINC। কিন্তু আমরা আজ যে সিস্টেমটির গল্প করবো তার নাম হচ্ছে GIMPS। প্রাইমনেট সার্ভারে চলা এই প্রোগ্রামটির নাম হয়তো আমরা অনেকেই শুনেছি। ছোট করে যে নামটিকে GIMPS ডাকা হয় সেটি হচ্ছে The Great Internet Mersenne Prime Search।


২.

মার্জেন নাম্বার, কিংবা আরও নির্দিষ্ট করে বলতে গেলে মার্জেন প্রাইম সংখ্যাদের জগতে মোটামুটি বিখ্যাত।

ম্যারিন মার্জেন ছিলেন একজন ফরাসী ধর্মযাজক কিন্তু তিনি পরিচিত মূলত মিউজিক থিওরিতে তার কাজের জন্য। তিনি একজন গণিতবিদও ছিলেন বটে, তার কাজের জন্যই মার্জেন নাম্বার এর নাম এমন হয়েছে। তবে সেই অর্থে মার্জেন সমসাময়িক গণিতবিদদের মত এতটা দক্ষ ছিলেন সেটা বলা যাবে না। তার অবদান অবশ্য সেজন্য কম নয়।

ম্যারিন মার্জেন
ষোলশ সালের প্রথমার্ধের বিজ্ঞান-গণিত বিশ্বের কেন্দ্র ছিলেন এক অর্থে মার্জেন। গণিতে বিশেষজ্ঞ না হওয়া সত্ত্বেও নিজের পরিচিতি এবং তার বন্ধু বিখ্যাত রেনে দেকার্তের সাহায্যে সে সময়ের গণিতবিদদের এক করে রেখেছিলেন মার্জেন। তার এই জালে ছিলেন দেকার্তে ছাড়াও প্যাস্কেল, হাইগেন, পেটিট, ফার্মার মত বড় বড় বিজ্ঞানী এবং গণিতবিদেরা। তিনি গ্যালিলিওর খুব বড় একজন সমর্থক ছিলেন। একথা বলা হয় যে মার্জেনের মৃত্যুর বিশ বছর পড় প্রতিষ্ঠিত হওয়া ফ্রান্সের সায়েন্স একাডেমি এবং ব্রিটেনের রয়্যাল একাডেমি মার্জেনের বংশধর। কাকতালীয় হোক কিংবা মজার ব্যাপারই হোক, সারা বিশ্বের ‘সুপার-কম্পিউটারদের’ মাঝখানের নেটওয়ার্ক ছিলেন ম্যারিন মার্জেন।

কিন্তু মার্জেন যত কিছুই করে যান না কেন, আজকে আলোচনার বিষয় মোটেও তিনি নন বরং তার নামে অলংকৃত মার্জেন সংখ্যা কিংবা আরও শুদ্ধ করে বলতে গেলে মার্জেন প্রাইম।

মার্জেন সংখ্যা সে সকল সংখ্যা যাদের \({2^p} - 1\) আকারে লিখা সম্ভব। যেমন 1, 3, 7, 15, 31। যদি মার্জেন সংখ্যাকে বাইনারি নাম্বার সিস্টেমে লেখা হয় তাহলে তারা হবে এমন সংখ্যাগুলো যাদের সবগুলো ডিজিটই 1। যেমন 1111111। যে সব মার্জেন সংখ্যা একইসাথে মৌলিক সংখ্যা, তাদেরকে বলা হয় মার্জেন প্রাইম। প্রথমদিকের মার্জেন প্রাইমগুলো হচ্ছে 3, 7, 31, 127। বিভিন্ন কারনে মার্জেন প্রাইমগুলো গুরুত্বপূর্ণ। একটা কারন হচ্ছে পারফেক্ট নাম্বারের সাথে তাদের গভীর সম্পর্ক। অন্য একটা কারন হচ্ছে, সাধারন কোন সংখ্যা থেকে একটা মার্জেন সংখ্যা মৌলিক কি না তা বের করা সহজ। এখানে একটা কথা জেনে রাখা যায় যে কোন সংখ্যা মৌলিক কিংবা প্রাইম কি না তা বের করাকে বলা হয় Primality Test।

মার্জেন প্রাইমের সংখ্যা অসীম কি না তা এখনও প্রমাণ করা সম্ভব হয় নি। অনেকে অবশ্য একটা মার্জেন প্রাইম ঠিক কখন পাওয়া যেতে পারে তা অনুমান করার চেষ্টা করেছেন।

মার্জেন প্রাইম বের করা তুলনামূলক ভাবে সহজ এর নানা কারন আছে। যেমন, \(p\) যদি একটা প্রাইম নাম্বার হয় কেবলমাত্র তবেই \({2^p} - 1\) প্রাইম নাম্বার হতে পারে। একটা মার্জেন নাম্বার প্রাইম কি না সেটা বের করার একটি অ্যালগরিদম বের করেন এডুয়ার্ড লুকাস যার নাম দেওয়া হয় Lucas Sequence। নবম থেকে বার নম্বর মার্জেন প্রাইম বের করা হয়েছে লুকাস সিকুয়েন্স ব্যবহার করে। পরে ১৯৩০ সালের দিকে হেনরি লেহমার এই পদ্ধতিটি আরও উন্নত করেন এবং এর নতুন নাম হয় লুকাস-লেহমার টেস্ট (LLT) । কিন্তু তখন মার্জেন সংখ্যাগুলো এত বড় আকার নিতে থাকে যে লুকাস লেহমার টেস্টও পরের প্রায় বাইশ বছরের জন্য কোন নতুন প্রাইম বের করতে পারেনি। শেষ মার্জেন প্রাইমটি বের করা হয় ১৯১৪ সালে, \({2^{107}} - 1\), যার ডিজিট ছিলো মাত্র তেত্রিশটি! মজার ব্যাপার হচ্ছে এটা এডওয়ার্ড লুকাস ১৮৭৬ সালেই এর চেয়ে বড় ঊনচল্লিশ ডিজিটের মার্জেন প্রাইম \({2^{127}} - 1\) খুঁজে বের করেছিলেন। নিজের বের করা প্রথম এবং একমাত্র মার্জেন প্রাইম।

এরপর বহুদিন চলে গেল, নতুন কোন মার্জেন প্রাইম আর পাওয়া যায় না। কিন্তু কম্পিউটারের উদ্ভাবন নতুন এক জগত খুলে দিলো পৃথিবীর সামনে। স্বয়ং অ্যালান টিউরিং ১৯৪৯ সালে কম্পিউটার ব্যবহার করে মার্জেন প্রাইম খোঁজা শুরু করেছিলেন। এবং পরবর্তী অর্থাৎ ১৩ নম্বর মার্জেন প্রাইমটি পাওয়া যায় তিন বছরের মধ্যেই, ১৯৫২ সালের ৩০ জানুয়ারি। ইউনিভার্সিটি অফ ক্যালিফোর্নিয়াতে হেনরি লেহমারের তত্ত্বাবধানে প্রফেসর রাফায়েল রবিনসন তার লেখা প্রোগ্রাম দিয়ে খুঁজে বের করেন ১৩ নম্বর মার্জেন প্রাইম, যাতে ডিজিট ছিল ১৫৭ টি। পরেরটি বের করা হয় দুই ঘন্টার মধ্যে।

১৯৫২ থেকে ২০১৩ পর্যন্ত বের করা মার্জেন প্রাইমের সংখ্যা হচ্ছে ৩৬। এদের প্রতিটিই বের হয়েছে কম্পিউটারের সাহায্যে এবং লুকাস লেহমার টেস্ট ব্যবহার করে।

কিন্তু একসময় অবস্থা আরও গুরুতর হতে থাকে। মার্জেন সংখ্যাগুলোর আকার হাতি থেকে ডাইনোসর আর ডাইনোসর থেকে ছোটখাট পর্বতের আকার নিতে শুরু করে। একসময় এমন অবস্থা হলো যে সুপার কম্পিউটার ছাড়া মার্জেন প্রাইম বের করার আর কোন উপায়ই রইলো না। একেকটা সুপার কম্পিউটার চালাতে কতটুকু খরচ হয় তা আমরা মোটামুটি অনুমান করতে পারি। মার্জেন প্রাইমের খোঁজ হয়তো একরকম থেমেই যেতো(অথবা বের করার গতি একেবারেই কমে যেত), যদি না এগিয়ে আসতেন জর্জ ওল্টম্যান এবং স্কট কারোস্কি তাদের GIMPS নিয়ে, এবং না থাকতেন সারা পৃথিবীর অসংখ্য স্বেচ্ছাসেবক।

৩.

জর্জ ওল্টম্যান MIT থেকে বের হওয়া একজন কম্পিউটার সায়েন্টিস্ট ছিলেন। ছয় বছর বয়সে তিনি নাম্বার থিওরির একটা বই পড়েন, প্রাইম নাম্বার নিয়ে কাজ করা হয়ে উঠে তার একরকমের শখ। অনেকদিন আগে থেকেই ওল্টম্যান প্রাইম নাম্বার বের করার নানা প্রজেক্টে কাজ করে গিয়েছেন। একসময় তার মাথায় আসে ডিস্ট্রিবিউটেড কম্পিউটিং ব্যবহার করে মার্জেন প্রাইম খোঁজার জন্য একটি প্রজেক্টের আইডিয়া। যেই ভাবা সেই কাজ। ১৯৯৬ সালের দিকে পথ চলা শুরু করে GIMPS। GIMPS বা Great Internet Mersenne Prime Search নামটি দিয়েছিলেন লুকাস ওয়েলশ, ২৯ তম মার্জেন প্রাইমটি যারা খুঁজে পেয়েছিলেন তাদের একজন।
 
জর্জ ওল্টম্যান
 
ওল্টম্যানের লিখা Prime95 প্রোগ্রাম দিয়ে কাজ শুরু করে GIMPS। চালু হওয়ার বছরই GIMPS খুঁজে বের করে তাদের প্রথম অর্থাৎ ৩৫ নম্বর মার্জেন প্রাইম। প্রথম দিকে খবর আদান প্রদান করা হতো ই-মেইলের মাধ্যমে। কিন্তু আস্তে আস্তে প্রজেক্টের আকার বড় হতে থাকে, হাজার হাজার মানুষ যোগ দিতে থাকে ওল্টম্যানের সাথে। ই-মেইল করে করে এত বড় একটা প্রজেক্ট চালানো আর সম্ভব হয় না।

তখন এগিয়ে এলেন স্কট কারোস্কি। নিজেরে কোম্পানি এন্ট্রোপিয়া থেকে কারোস্কি লিখে দিলেন PrimeNet নামের একটা সার্ভারের নেটওয়ার্ক সফটওয়্যার, এবং তখন থেকে GIMPS ব্যবহার করা হয়ে উঠল আরও সহজ। এক ঝামেলা শেষ হওয়ার পর ওল্টম্যান নিজের কাজে আরও মন দিলেন, Prime95 প্রোগ্রামটিকে আরও শক্তিশালী করে তুললেন তিনি। GIMPS এর জন্য লেখা ওল্টম্যানের বড় সংখ্যা গুণ করার যে লাইব্রেরিগুলো আছে সেগুলো বিশ্বে সবচেয়ে দ্রুতগতির এবং অন্যান্য প্রাইম নাম্বার বের করার প্রোগ্রামগুলোও এদের ব্যবহার করে।

আমরা আগেই বলেছি GIMPS ব্যবহার করে Quasi-opportunistic supercomputing। মোটামুটি একটা আধুনিক কম্পিউটার হলেই এই সফটওয়্যারটি ব্যবহার করা যায়। কম্পিউটার যত বেশি সময় চালু থাকবে তত ভালো, তবে কোন কারনে বন্ধ থাকলেও সমস্যা নেই। প্রোগ্রামটি খুব কম পরিমাণ মেমোরি ব্যবহার করে তাই কম্পিউটারের গতি কমে যাওয়ারও সম্ভাবনা নেই। মার্জেন রিসার্চ টিমের ভাষ্যমতে 60MB এর মত র‍্যাম ব্যবহার করে GIMPS।

GIMPS যে কাজটি করে সেটা হচ্ছে PrimeNet সার্ভারের সাথে নানারকম তথ্য আদান-প্রদান করে, এবং তার আকারও একেবারে কম। এমনকি নিরবিচ্ছিন্ন ইন্টারনেট সংযোগও প্রয়োজন নেই, প্রতিদিন কিংবা প্রতিসপ্তাহে একবার করে চালু করলেই যথেষ্ট। সার্ভার থেকে করার জন্য কিছু কাজ GIMPS কে পাঠানো হয়, আর GIMPS সেই কাজটা করতে থাকে এবং শেষ হলে ফলাফলটুকুক সার্ভারে আবার পাঠিয়ে দেয়। একেবারে সহজ উপায়।

কিন্তু এ তো গেল নেটওর্য়ার্কের ব্যাপার-স্যাপার। প্রোগ্রামটির পিছনের গণিতটুকু সম্ভবত সবচেয়ে গুরুত্বপূর্ণ।

আমরা আগেই বলেছি যে একটা মার্জেন সংখ্যা \({2^p} - 1\) প্রাইম হবে যদি \(p\) প্রাইম হয়। GIMPS প্রথমেই তাই \(p\) এর একটা লিস্ট করে ফেলে। ধরা যাক সেখান থেকে একটা মার্জেন সংখ্যা পাওয়া গেল। এখন সেই মার্জেন সংখ্যাটি প্র্রাইম কি না সেটা কয়েক ধাপে পরীক্ষা করা হয় যেন প্রোগ্রামটি যথেষ্ট পরিমাণ সময় বাঁচাতে পারে।

প্রথমেই দেখা হয় \({2^p} - 1\) তুলনামূলকভাবে ছোট কোন সংখ্যা দিয়ে বিভাজ্য কি না। যদি তেমন ছোট কোন সংখ্যা না পাওয়া যায়, তাহলে আরেকটু বড় সংখ্যা নিয়ে কাজ করা হয়। এক্ষেত্রে এগিয়ে আসে মার্জেন সংখ্যা নিয়ে আরেকটি গাণিতিক থিওরেম। যদি \(q\) এমন একটা সংখ্যা হয় যা \({2^p} - 1\) কে ভাগ করতে পারে, তবে অবশ্যই \(2kp + 1\) আকারের হবে। এ থেকে এরেটোস্থিনিসের সিভের মত একটা কিঞ্চিৎ পরিবর্তিত সিভ ব্যবহার করে 40000 এর নিচের সংখ্যাগুলোর জন্য উৎপাদক খুঁজে বের করার চেষ্টা চালানো হয়। এই কাজ করে মোটামুটি 95% সম্ভাব্য উৎপাদক বাদ দিয়ে দেওয়া যায়। তাতে কাজ না হলে একের পর এক উৎপাদক দিয়ে সংখ্যাটিকে ভাগ করা হয়। প্রোগ্রামটি এমনভাবে লেখা যে এই ভাগ করার প্রক্রিয়া ততক্ষন চলবে যতক্ষন না এই কাজ করতে কম্পিউটার খুব বেশি সময় নিতে থাকে। এই কাজটিকে আরও সহজ করা হয় পোলার্ড মেথড নামের একটি পদ্ধতি ব্যবহার করে।

যখন কোনটাতেই কাজ হয় না, তখন শেষ অস্ত্র লুকাস-লেহমার টেস্ট। লুকাস-লেহমার টেস্ট বড় বড় সংখ্যার জন্য অনেক সময় নেয় কাজ শেষ করতে। তাই শুধু সেসব সংখ্যাই লুকাস লেহমার টেস্ট পর্যন্ত পৌছুতে পারে যাদের মার্জেন প্রাইম হওয়ার সম্ভাবনা খুবই বেশি। কীভাবে কাজ করে তা বললেও কেন লুকাস-লেহমার টেস্ট কাজ করে সেটা এখানে বলা হচ্ছে না। আগ্রহীরা ইচ্ছা করলেই ইন্টারনেট থেকে দেখে নিতে পারেন।

ধরা যাক আমাদের কাছে একটা সিকুয়েন্স দেওয়া আছে এরকম,

S(1) = 4, S(2) = 14, S(3) = 194, S(4) = 37634 . . .

এই অনুক্রমটি একটা নিয়ম মেনে চলে আর সেটা হচ্ছে, \(S\left( {n + 1} \right) = S{\left( n \right)^2} - 2\) হবে। তাহলে লুকাস লেহমার নিয়ম বলে একটা মার্জেন সংখ্যা \({M_p}\) কিংবা ${{2}^{p}}-1$ প্রাইম হবে যদি সংখ্যাটা S(p-1) কে নিঃশেষ ভাগ করতে পারে। লুকাস-লেহমার টেস্ট করে \({2^7} - 1\) বা 127 প্রাইম কি না তা আমরা বের করতে পারি এভাবে।



S (1) = 4

S (2) = (4 × 4 - 2) (4 × 4 - 2) mod 127 = 14

S (3) = (14 × 14 - 2) (14 × 14 - 2) mod 127 = 67

S (4) = (67 × 67 - 2) (67 × 67 - 2) mod 127 = 42

S (5) = (42 × 42 - 2) (42 × 42 - 2) mod 127 = 111

S (6) = (111 × 111 - 2) (111 × 111 - 2) mod 127 = 0

এখানে বলে রাখা ভালো যে a mod b মানে হচ্ছে a কে b দিয়ে ভাগ করলে ভাগশেষ কত থাকবে।

যদি লুকাস লেহমার টেস্ট শেষ করার পর GIMPS কোন প্রাইম খুঁজে পায় তাহলে সেই প্রাইমটি সত্যিই প্রাইম কি না সেটা আবার পরীক্ষা করা হয়।

৪.

১৯৯৬ সালের নভেম্বর ১৩ থেকে ২০১৩ সালের জানুয়ারি ২৫ পর্যন্ত মার্জেন প্রাইম পাওয়া গেছে মোট ১৪টি। এদের মাঝে সবচেয়ে ছোটটি হচ্ছে \({2^{1,398,269}} - 1\) যার ডিজিট হচ্ছে 420,921 টি। সবচেয়ে বড়টি হচ্ছে \({2^{57,885,161}} - 1\) যার ডিজিট হচ্ছে 17,425,170 টি। প্রতি লাইনে ৭৫ ডিজিট এবং প্রতি পৃষ্ঠায় ৫০ লাইন লিখা যায় এমন কোন খাতায় আমরা যদি সংখ্যাটি লিখতে যাই তাহলে মোট পৃষ্ঠা প্রয়োজন হবে ৪৬৪৭ টি। এবং এটাই এখন পর্যন্ত খুঁজে পাওয়া সবচেয়ে বড় প্রাইম নাম্বার। এদের প্রতিটি GIMPS এর সাহায্যে।

সুকুমার রায়ের ‘লক্ষণের শক্তিশেলে’ একটা ছড়া আছে এমন-

অবাক কল্লে রাবণ বুড়ো-

যষ্ঠির বাড়ি সুগ্রীবে মারি

কল্লে যে তার মাথা গুঁড়ো,

অবাক কল্লে রাবণ বুড়ো।

ছড়াটিকে খুব জঘন্যভাবে বিকৃত করে আমরা এভাবে লিখতে পারি-

অবাক কল্লে ওল্টম্যান বুড়ো-

ডিস্ট্রিবিউটেড কম্পিউটিঙের বাড়ি মার্জেন প্রাইমে মারি

কল্লে যে তার মাথা গুঁড়ো,

অবাক কল্লে ওল্টম্যান বুড়ো।

এখন পর্যন্ত যতগুলো মার্জেন প্রাইম বের করা হয়েছে তাদের আটটিই পাওয়া গেছে ইউনাভার্সিটি অফ ক্যালিফোর্নিয়া কিংবা UCLA (University Of California, Los Angeles) তে। ২০০৮ সালে ১৩ অগাস্ট তারা একটি মার্জেন প্রাইম খুঁজে পায় যেটি কি না দশ মিলিয়ন ডিজিটের উপর প্রথম মার্জেন প্রাইম। এই কারনে Electronic Frontier Foundation এর ঘোষণা করা 100,000 ডলারের পুরষ্কারটি পায় GIMPS। পুরোপুরি ফ্রি এবং ওপেন-সোর্স হওয়া সত্ত্বেও GIMPS থেকে পাওয়া প্রাইম নাম্বারের জন্য ঘোষিত পুরষ্কারের উপর এর একটা লাইসেন্স আছে। এই টাকার অধিকাংশই অবশ্য UCLA তে দেওয়া হয়েছিল। বাকিটুকু নানারকম চ্যারিটি এবং প্রজেক্টের উন্নতিসাধনে ব্যবহার করা হয়।

গল্প কিন্তু এখানেই শেষ নয়। একশ মিলিয়ন ডিজিটের উপর প্রথম মার্জেন প্রাইমটি খুঁজে বের করার জন্য Electronic Frontier Foundation আগে থেকেই 150,000 ডলারের ঘোষনা দিয়ে রেখেছে। শেষ পর্যন্ত খুঁজে বের করা মার্জেন প্রাইমটির ডিজিট ১৮ মিলিয়নের নিচে তাই ১০০ পর্যন্ত যেতে যেতে বেশ সময় লাগার কথা। কিন্তু কম্পিউটিং এর আরও উন্নতি হলে একশ মিলিয়ন ডিজিটের মার্জেন প্রাইমের জন্য আমাদের খুব সম্ভবত বেশিদিন অপেক্ষা করতে হবে না।

কয়েকজন আগ্রহী মানুষ আর খুব সাধারন যন্ত্রপাতি(এক্ষেত্রে অতি সাধারন কিছু কম্পিউটার, যেগুলো হয়তো অধিকাংশ সময় চুপচাপ ঘুমিয়ে থাকে) দিয়ে যে কত অসাধারন কিছু করা যেতে পারে তার সবচেয়ে বড় প্রমাণ সম্ভবত GIMPS। ড. কার্টিস কুপার তাদের একজন, তিনি University of Central Missouri এর Mathematics and Computer Science বিভাগের একজন গণিতবিদ। একদিন তিনি লক্ষ্য করে দেখলেন তাদের ডিপার্টমেন্টের অসংখ্য কম্পিউটার রাতের বেলা শুধু শুধু অকেজো হয়ে পড়ে থাকে। কুপার ভাবলেন, “কী দরকার? এগুলো দিয়ে কোন কাজ করলেও তো চলে।“আর যেই ভাবা সেই কাজ, কয়েকটা কম্পিউটার নিয়ে কুপার লেগে গেলেন GIMPS দিয়ে মার্জেন প্রাইম খুঁজতে। আস্তে আস্তে আগ্রহী শিক্ষক থেকে শিক্ষার্থীরাও তার সাথে যোগ দিতে থাকলো ঘটনাটা কতদূর যায় দেখার জন্য। আর কুপারের সাফল্য নিঃসন্দেহে নজরকারা, কারন এখন পর্যন্ত কুপার এবং তার টিম খুঁজে বের করেছেন দানবাকারের কয়েকটি মার্জেন প্রাইম, যাদের মাঝে বর্তমানে বিশ্বের সবচেয়ে বড় মার্জেন প্রাইমটিও রয়েছে।

কার্টিস কুপার প্রাইম-শিকারীদের মাঝে একধরনের কিংবদন্তী বলা যেতে পারে, আর তাকে নিয়ে অনেকগুলো রজনীকান্ত ধরনের কৌতুক আছে। এদের বেশ কয়েকটি হচ্ছে এরকম-

1. কার্টিস কুপার এর Primality Test এর প্রয়োজন হয় না, তিনি একটা নাম্বারকে প্রাইম হতে হুকুম করেন।

2. ৪৯ নম্বর মার্জেন প্রাইমটা কার্টিস কুপার ইতোমধ্যেই জানেন। কিন্তু তিনি কাউকে বলছেন না অন্যদের বিখ্যাত হওয়ার সুযোগ দেওয়ার জন্য।

3. কার্টিস কুপার আশেপাশে থাকলে প্রাইমালিটি টেস্ট অ্যালগরিদম গুলো O(1) কমপ্লেক্সিটিত চলতে শুরু করে।

4. কার্টিস কুপারের একেকটা ভাগের সময় মাপার জন্য প্লাঙ্কের ধ্রুবক প্রয়োজন হয়।

5. (এটা একটু পরিবর্তিত) কার্টিস কুপার চা বানানোর সময় এরেটোস্থিনিসের ছাঁকনি ব্যবহার করে।

GIMPS দিয়ে খুঁজে বের করা এখন পর্যন্ত প্রাইম নাম্বারগুলো হচ্ছে এরকম-


ইচ্ছা করলে আমরা যে কেউ যোগ দিতে পারি GIMPS প্রজেক্টে। সফটওয়্যারটা নামিয়ে চালিয়ে দিয়ে শুধু ধৈর্য্য ধরে অপেক্ষা করা কাজ। আগেই বলা হয়েছে যে সফটওয়্যারটা কাজ করে চুপচাপ, টের পাওয়ার কোন উপায় নেই। আর মোটামুটি 1.7GHz এর একটা প্রসেসরকেই GIMPS প্রচন্ড শক্তিশালী বলে ধরে নেয়।

কে জানে, হয়তো ঠিক পরের মার্জেন প্রাইমটা পাওয়া যাবে বাংলাদেশের কোন এক ভাঙাচোরা কম্পিউটারে। আর তাতে হয়তো ডিজিট থাকবে একশ মিলিয়নের উপরে।

(শেষকথা: পরের মার্জেন প্রাইমটি বাংলাদেশে পাওয়া যায় নি। এই লেখাটি ২০১৫ সালে লিখা, ২০১৯ এর আগ পর্যন্ত আরও দু'টি মার্জেন প্রাইম পাওয়া গেছে। 49 তম মার্জেন প্রাইমটি পাওয়া গিয়েছিলো ২০১৬ সালের ৭ জানুয়ারি, সেটা খুঁজে বের করেছিলেন আবার সেই কার্টিস কুপারের দল। ৫০ তমটি পাওয়া গিয়েছে ২০১৮ সালের ৩ তারিখ, জোনাথন পেস নামের একজন ইলেকট্রিক্যাল ইঞ্জিনিয়ারের কম্পিউটারে।)


তথ্যসূত্র:
1. GIMPS ডাউনলোড করার জন্য: http://www.mersenne.org/download/
2. লুকাস-লেহমার টেস্টের প্রমাণ দেখার জন্য: https://primes.utm.edu/notes/proofs/LucasLehmer.html
3. http://en.wikipedia.org/wiki/Quasi-opportunistic_supercomputing
4. http://en.wikipedia.org/wiki/Mersenne_prime
5. http://en.wikipedia.org/wiki/Great_Internet_Mersenne_Prime_Search
6. http://www.mersenne.org/various/history.php
7. Prime Numbers – David Wells

 Cover Photo by Lennart kcotsttiw from Pexels 

মুক্ত হোক সফটওয়্যার


১.
একটা কম্পিউটার সিস্টেম অনেকধরনের যন্ত্রপাতি মিলে তৈরী হয়। সেখানে একটা প্রসেসর থাকে যার কাজ হচ্ছে হিসেব-নিকেশ এবং সবকিছু নিয়ন্ত্রন করা। এই যন্ত্রটি এতটাই গুরুত্বপূর্ণ যে অনেকে কম্পিউটার বলতে প্রসেসরকে বুঝায়। কারন কম্পিউটারের অন্য যে কোন অংশ সরিয়ে নিলেও তাকে কম্পিউটার বলা যায়, কিন্তু প্রসেসর ছাড়া কোন কিছুকে কম্পিউটার বলা সম্ভব নয়।

কম্পিউটারের বাকি সব অংশ ঘুরে ফিরে এই প্রসেসরের সাথে কোন না কোন ভাবে যুক্ত থাকে। এই সবকিছুকে আলাদা আলাদা ভাবে নিয়ন্ত্রন করা বড় হ্যাপার কাজ। এদের কয়েকটা ইনপুট দেয়, সেগুলো থেকে আউটপুট পাওয়া যায় অন্য কোথাও, মাঝখানে অসংখ্য হিসেব-নিকেশ, উলট-পালট হয়। কম্পিউটারকে দিয়ে কোন কাজ করাতে গেলে সেটা করা হয় একটা প্রোগ্রাম লিখে। যদি আমাদের প্রোগ্রামের কম্পিউটারের এই প্রত্যেকটি যন্ত্রকে আলাদা আলাদা ভাবে নিয়ন্ত্রন করতে হতো তাহলে দিনশেষে প্রোগ্রামারের অস্তিত্ব খুঁজে পাওয়া অত্যন্তু দুষ্কর একটি কাজ হতে পারতো।

সেই সমস্যায় পড়তে হয় না তার কারন কম্পিউটারের গভীরে চলতে থাকা জটিল জটিল প্রক্রিয়াগুলোকে নিয়ন্ত্রন করার জন্য একটি বিশেষ সফটওয়্যার বা প্রোগ্রাম থাকে, যাকে বলা হয় অপারেটিং সিস্টেম। অপারেটিং সিস্টেম কম্পিউটারের জন্য সবচেয়ে গুরুত্বপূর্ণ সফটওয়্যার। যেহেতু অপারেটিং সিস্টেম একজন ব্যবহারকারীর সাথে কম্পিউটারের যন্ত্রপাতির যোগাযোগের কাজটি করে দেয় তাই একটি সফটওয়্যার তৈরী করতে গিয়ে প্রোগ্রামারদের খুব একটা ভাবতে হয় না।

একটি কম্পিউটারের জন্য ভালোরকমের অপারেটিং সিস্টেম তৈরী করা খুব সহজ একটা কাজ নয়। কম্পিউটারের ইতিহাসের একেবারে শুরুর দিকে যা হতো তা হচ্ছে একেক কোম্পানি একেকভাবে কম্পিউটার তৈরী করতো। ঘুরেফিরে তারা সবাই কাজ করতো একই উপায়ে, কিন্তু একজনের সাথে অন্যজনের কোন মিল নেই। এই কারনে তখন প্রত্যেকটা কম্পিউটার সিস্টেমের জন্য আলাদা আলাদা অপারেটিং সিস্টেম বানাতে হতো।

তেমনই একটি কম্পিউটার সিস্টেম ছিলো PDP-10।

সেটা তখনকার কথা যখন ইন্টারনেট বলতে কিছু ছিলো না। কিছু কিছু বিশ্ববিদ্যালয়ে প্রোগ্রামারদের কিছু ছোট ছোট গ্রুপ তৈরী হয়েছিলো যারা পারলে একটা সিস্টেমের কঙ্কাল তো দূরের কথা পারলে ডিএনএ এর ভেতর ঢুকে যায়। এই গ্রুপগুলোর উদ্দেশ্যই ছিলো একসাথে মিলে নানারকম মজার মজার কাজ করা এবং একজন অন্যজনকে নিজেদের কাজগুলো দেখানো।

এই ছোট ছোট কমিউনিটিগুলো প্রায় একইসাথে গড়ে উঠলো এবং বাড়তে থাকলো। দুঃখজনকভাবে তাদের একদলের অপরদের সাথে যোগাযোগ করার কোন উপায় ছিলো না। ওরা যে জায়গাগুলোতে বেড়ে উঠতে লাগলো সেগুলো ছিলো এম.আই.টি কৃত্রিম বুদ্ধিমত্তা গবেষণাগার, ক্যালিফোর্নিয়া বিশ্ববিদ্যালয়, বার্কলে বিশ্ববিদ্যালয় এবং কার্নেগি-মেলন বিশ্ববিদ্যালয়। এম.আই.টি বা ম্যাসাচুসেটস ইনস্টিটিউট অফ টেকনোলজির কৃত্রিম বুদ্ধিমত্তা ল্যাবের এই কমিউনিটিটা একসময় নিজেদের 'হ্যাকার' বলে ডাকতে শুরু করলো। এবং এই ছোট কমিউনিটিগুলো তাই ইতিহাসের মত প্রথমবারের মত তৈরী করলো হ্যাকারদের সংস্কৃতি।

এখানে একটা কথা বলা গুরুত্বপূর্ণ যে আজকাল যোগাযোগ মাধ্যমের কারনে যারা হ্যাকার বলে সাধারনভাবে পরিচিত তারা সত্যিকার অর্থে হ্যাকার নয়। হ্যাকাররা কেবলমাত্র আনন্দের জন্য কম্পিউটার সিস্টেম ভেঙেচুরে নিজের মত তৈরী করে, যা করলে হয়তো কোন কাজ হবে কিংবা যা করলে হয়তো কোন কাজ হবে না কোনকিছুই তাদের কৌতূহলের বাইরে নয়। আমরা যাদের হ্যাকার বলে থাকি তাদের কাজ কোন সিস্টেমের নিরাপত্তায় ত্রুটি খুঁজে বের করে সেখানে অনুপ্রবেশ করা, সেটা যে উদ্দেশ্যেই হোক না কেন। সত্যিকারের হ্যাকাররা এই দলটিকে বলে থাকেন 'ক্র্যাকার'।

১৯৬৯ সালে কয়েকটি বিশ্ববিদ্যালয়কে ARPANET, যে প্রজেক্ট থেকে পরে একসময় ইন্টারনেটের জন্ম হবে, এর মাধ্যমে জুড়ে দেওয়া হলো। আমরা একটু আগেই যে PDP-10 সিস্টেমের কথা বলেছি, তখন কম্পিউটার গবেষণাগারগুলোর অধিকাংশই সেই সিস্টেম ব্যবহার করতো। PDP-10 এর জন্য যদিও একটি সাধারন অপারেটিং সিস্টেম ছিলো, কিন্তু সবাই নিজেদের সুবিধের জন্য নিজেরাই একটি করে অপারেটিং সিস্টেম তৈরী করে নিয়েছিলো। যখন তারা ARPANET দিয়ে যুক্ত হয়ে গেলো, তখন দেখা গেলো এই নেটওয়ার্কটি নিয়ন্ত্রণ করার মত যথেষ্ট আগ্রহ তেমন কারোরই নেই। সেই কাজটি নিয়ে নিলেন আমাদের PDP-10 হ্যাকাররা।

এবং আস্তে আস্তে তৈরী হতে লাগলো হ্যাকার আন্দোলন। তারা একজন আরেকজনের সাথে যোগাযোগ করার উপায় পেয়ে গেলো। এই অসাধারন দলটি আস্তে আস্তে গড়ে তুলতে লাগলো একটি সংস্কৃতি। তারা একজন আরেকজনের সাথে নিজেদের করা কোড আদান-প্রদান করতে শুরু করলো, একজন আরেকজনের কাজ ব্যবহার করতে লাগলো। এম.আই.টির কৃত্রিম বুদ্ধিমত্তা গবেষণাগারের PDP-10 ব্যবহার করতো যে অপারেটিং সিস্টেম তার নাম ছিলো ITS, একটা টাইম-শেয়ারিং অপারেটিং সিস্টেম, অনেকদিন  ধরে হ্যাকররা সে সিস্টেমটি আস্তে আস্তে উন্নত করে যাচ্ছিলেন।

এবং ১৯৭১ সালে এই কৃত্রিম বুদ্ধিমত্তা ল্যাবে প্রোগ্রামার হিসেবে যোগ দিলেন হার্ভার্ড বিশ্ববিদ্যালয়ের প্রথম বর্ষের একজন ছাত্র, রিচার্ড ম্যাথিউ স্টলম্যান।

২.
রিচার্ড স্টলম্যান এম.আই.টি কৃত্রিম বুদ্ধিমত্তা গবেষণাগারে যে কাজটি করতেন তা হচ্ছে ITS অপারেটিং সিস্টেমকে উন্নত করার কাজে সাহায্য করা। অসাধারন একজন প্রোগ্রামার, প্রায় খ্যাপাটে, যা হবার তাই হলো। স্টলম্যান খুব সহজেই হ্যাকার সমাজে ঢুকে গেলেন। সবাই তাকে চিনতো rms নামে।

এটা বলার প্রয়োজন থাকে না যে এই পরিবেশ রিচার্ড স্টলম্যানের মত একজনের কাছে কতটা আকর্ষণীয় ছিলো। সফটওয়্যার আদান-প্রদান নতুন কিছু নয়, কিন্তু হ্যাকাররা এই কাজটা যেভাবে করতো সেটা ছিলো অন্য মাত্রায়। স্টলম্যান পুরো বিষয়টায় এতটাই ডুবে গেলেন যে ১৯৭৪ সালে পড়াশুনার প্রথম ধাপ শেষ করে তিনি নিজের পুরনো বিশ্ববিদ্যালয় হার্ভার্ড ছেড়ে চলে এলেন এম.আই.টি. তে।

অন্ধকার ঘনিয়ে এলো খুব তাড়াতাড়ি।

রিচার্ড স্টলম্যান
রিচার্ড স্টলম্যান
বিপক্ষের সাথে যুদ্ধ জয়ের জন্য কিছু কিছু সফটওয়্যার কোম্পানি আস্তে আস্তে নিজেদের সফটওয়্যারের উপর কপিরাইট বসাতে শুরু করলো। যারা সফটওয়্যারগুলো কিনবে তারা না এগুলোকে নিজের মত পাল্টে নিতে পারবে, না অন্যদের মাঝে বিতরণ করতে পারবে। যে হ্যাকার সংস্কৃতি গড়ে উঠেছে সহযোগীতার মাধ্যমে তাদের কাছে এই আচরণ একেবারেই নতুন। যেখানে তারা শিখে এসেছে প্রতিবেশীকে পরিবারের সদস্যের মত চিন্তা করতে সেখানে বলা হলো তোমার প্রতিবেশী গোল্লায় যাক তাকে একবেলার লবনও ধার দেওয়া যাবে না।

পরিস্থিতি আরও করুণ হয়ে গেলো যখন ১৯৮১ সালে এম.আই.টি. ল্যাবের প্রায় সব হ্যাকার সিম্বলিক্স নামের একটি কোম্পানিতে যোগ দিতে চলে গেলো। পরের বছর আরেকটি PDP-10 কেনা হলো, কিন্তু প্রশাসন থেকে সিদ্ধান্ত নেওয়া হলো ওতে ITS অপারেটিং সিস্টেম ব্যবহার না করে ডিজিটাল কোম্পানির একটি কপিরাইট করা অপারেটিং সিস্টেম ব্যবহার করা হবে। কিন্তু অনেকদিন হয়ে গেছে, PDP-10 এর থেকে অনেক ভালো কম্পিউটার আসতে শুরু করেছে। খুব তাড়াতাড়ি এই সিস্টেমই এম.আই.টি. নিজেদের কৃত্রিম বুদ্ধিমত্তা গবেষণাগার থেকে সরিয়ে দিলো। এত বছর ধরে তৈরী করা ITS এর সব কাজ গেলো পানিতে।

নতুন যুগ আসবেই। কিন্তু নতুন যুগের কম্পিউটারগুলোতে যে অপারেটিং সিস্টেমগুলো ছিলো সেগুলোতে ব্যবহারকারীর কোন স্বাধীনতা ছিলো না। না তাদের সুযোগ ছিলো সফটওয়্যারগুলোর কোড দেখার কিংবা নিজের মত পাল্টে নেওয়ার। অনেকে কেন এটা কোন অপরাধ নয় তার পিছনে যুক্তি দেখাতে লাগলেন, কিন্তু সেই রিচার্ড স্টলম্যানের মনে হতে লাগলো কোনটাই ঠিক উপযুক্ত হচ্ছে না।

নিজের হ্যাকার সম্প্রদায় যখন প্রায় বিলুপ্ত তখন রিচার্ড ম্যাথিউ স্টলম্যান এরপর কী করা যায় তা নিয়ে দ্বিধাদ্বন্দ্বে ভুগতে শুরু করলেন। বেশ কিছু সম্ভাবনা তার মাথায় খেলতে লাগলো। তিনি কোন একটি আবদ্ধ নীতির সফটওয়্যার, যাকে আজ বলা হয় প্রোপ্রায়েটরি সফটওয়্যার, এর জগতে প্রবেশ করতে পারতেন। কখনো তিনি আর পারবেন না নিজের কাজ সঙ্গী হ্যাকারদের মাঝে আদানপ্রদান করতে। দুঁদে প্রোগ্রামার স্টলম্যান, ইন্ডাস্ট্রির জন্য কোড লিখে তিনি যে কম কামাতেন না তা বুঝাই যাচ্ছে।

কিন্তু এও তার মনে হতে লাগলো এভাবে পৃথিবীকে ভাগ করে দিয়ে তিনি জীবনের শেষ মূহুর্তগুলো কি শান্তিতে থাকতে পারবেন?

আরেকটি খুব সহজ উপায় ছিলো কম্পিউটার এর জগত থেকেই দূরে সরে আসা। কিন্তু স্টলম্যান বুঝলেন এই কাজ করলে কিছু একটা করে জীবন হয়তো চলে যাবে, কিন্তু তার দক্ষতার ভাগ্যে রইবে  আজীবন নির্বাসন।

১৯৮০ সালে এম.আই.টি. কৃত্রিম বুদ্ধিমত্তা ল্যাবে নতুন একটি লেজার প্রিন্টার লাগানো হলো, জেরক্স ৯৭০০। এর আগের লেজার প্রিন্টারটির প্রোগ্রাম রিচার্ড স্টলম্যান সকলের সুবিধের জন্য পাল্টে নিয়েছিলেন। কেউ ধরা যাক একটা কিছু প্রিন্ট করতে দিয়ে অন্য কাজ করছে, প্রিন্ট শেষ হলেই প্রিন্টারটি সাথে সাথে তাকে ম্যাসেজ করে জানিয়ে দিতে পারতো কাজ শেষ। এছাড়া ধরা যাক কোন কারনে যন্ত্রটিতে কোন ঘাপলা হয়েছে, তাহলে সব ব্যবহারকারী এই খবর পেয়ে যেতো। নতুন প্রিন্টারটি ঠিক এভাবে পাল্টে নেওয়ার জন্য সফটওয়্যারের সোর্স কোডটি স্টলম্যানরা চাইলেন। কিন্তু কিছুতেই তাদের সেটি দেওয়া হলো না! এরকম তিনি আশা করেননি। তিনি বুঝে গেলেন পৃথিবীর সব মানুষকে এভাবে বঞ্চিত করে তিনি শান্তিতে থাকতে পারবেন না।

রিচার্ড স্টলম্যান একটি খুব গুরুত্বপূর্ণ সিদ্ধান্ত নিলেন। সফটওয়্যারকে মুক্ত করতে হবে।

৩.
মুক্ত সফটওয়্যার হতে হবে সবার জন্য উন্মুক্ত। সবাই নিজের মত তা পাল্টে নিতে পারবে, নিজের ইচ্ছেয় অন্যের মাঝে ছড়িয়ে দিতে পারবে। কোন বাঁধানিষেধ থাকবে না, কোন অনৈতিক কপিরাইট পারবে না ব্যবহারকারীকে আটকাতে। কিন্তু মুক্ত সফটওয়্যারের ব্যবহারের জন্য সবার আগে যা লাগবে তা হলো একটি মুক্ত অপারেটিং সিস্টেম।
গ্ন্যু এর লোগো, এই প্রাণীটির নামও গ্ন্যু

রিচার্ড স্টলম্যান বুঝতে পারলেন এই কাজটি তাকেই করতে হবে, কারন তিনি একজন অপারেটিং সিস্টেম প্রোগ্রামার। তখনকার সময় অত্যন্ত জনপ্রিয় একটি অপারেটিং সিস্টেম ছিলো বেল ল্যাবরেটরিতে কেন থম্পসন এবং ডেনিস রিচির তৈরী করা UNIX। স্টলম্যান সিদ্ধান্ত নিলেন এই ইউনিক্সের উপর ভিত্তি করেই তিনি মুক্ত অপারেটিং সিস্টেমটি তৈরী করবেন যেন ইউনিক্স ব্যবহারকারীরা সহজেই সিস্টেমটিতে কাজ করতে পারে। অপারেটিং সিস্টেমটির নাম দেওয়া হলো হ্যাকারদের একটি ঐতিহ্যবাহী উপায়ে, GNU, যার মানে হচ্ছে GNU is Not Unix। গ্ন্যু ইউনিক্স নয়!

কিন্তু অপারেটিং সিস্টেম তো কেবল অপারেটিং সিস্টেম নয়, তার সাথে আরও অনেকরকম সফটওয়্যার থাকে। প্রোগ্রামারদের জন্য এডিটর, কম্পাইলার, ডিবাগার থাকবে। হয়তো একটি সুন্দর চেহারা থাকবে। সবার জন্য গান শুনা, ভিডিও দেখা কিংবা ইন্টারনেট ব্যবহারের ব্যবস্থা থাকবে। কেউ কেউ আবার মাঝে মাঝে গেম-টেমও খেলতে চায়।

তাছাড়া এত বড় একটা অপারেটিং সিস্টেম বানানো কম ঝক্কির কাজ নয়। তাই স্টলম্যান সিদ্ধান্ত নিলেন যেখান থেকে পারেন সেখান থেকে কোড এনে নিজের কাজ কমানোর। যেমন গ্ন্যু এর জন্য তিনি নতুন কোন উইন্ডো সিস্টেম না বানিয়ে আগে থেকেই তৈরী করা এক্স উইন্ডো সিস্টেম ব্যবহার করার সিদ্ধান্ত নিলেন।

এম.আই.টি. তে চাকুরিরত অবস্থায় থাকলে সে সময় স্টলম্যান যে কাজ করেছেন সেটা পুরোপুরি এম.আই.টি.র দখলে চলে যেতে পারে, তখন তার আর কিছুই করার থাকবে না। তাই ১৯৮৪ সালে রিচার্ড স্টলম্যান এম.আই.টি. তে তার চাকুরিটি ছেড়েই দিলেন। কিন্তু কৃত্রিম বুদ্ধিমত্তা ল্যাবের প্রধান অধ্যাপক উইনস্টন চাকুরি না থাকলেও স্টলম্যানকে ল্যাবের যন্ত্রপাতি ব্যবহার করার অনুমতি দিয়ে দিলেন।

স্টলম্যান অপারেটিং সিস্টেম বানানোর কাজ শুরু করলেন।

প্রোগ্রাম লিখতে হলে প্রথমেই যা প্রয়োজন তা হচ্ছে একটি এডিটর। ১৯৮৪ এর সেপ্টেম্বরে স্টলম্যান Emacs নামের একটি এডিটর বানানোর কাজ শেষ করলেন এবং পরের বছরের শুরুর দিকে সেটি মোটামুটি ব্যবহার উপযোগী হয়ে উঠলো।

প্রোগ্রাম লিখবে প্রোগ্রামাররা, সেটি কম্পিউটারের ভাষায় অনুবাদ করার কাজটি যে করে তাকে বলা হয় কম্পাইলার। এডিটর হলো, এবার একটি কম্পাইলার লাগবে। প্যাস্টেল নামের একটি কম্পাইলার থেকে স্টলম্যান নিজের কম্পাইলার তৈরী করতে গিয়ে দেখলেন সেটির ডিজাইন এমনভাবে করা যে তখনকার ইউনিক্সে সিস্টেমে এটা চলতেই পারবে না। প্রচন্তু একরোখা লোক রিচার্ড স্টলম্যান। একেবারে শূন্য থেকে তিনি কম্পাইলার লেখা শুরু করলেন। তৈরী হলো GCC, GNU Compiler Collection, যা একাধিক প্রোগ্রামিং লেঙ্গুয়েজকে কম্পাইল করতে পারতো।

Emacs এডিটর এর ব্যবহারকারী বাড়তে লাগলো, স্টলম্যানের কাজে অন্যরাও আগ্রহ দেখাতে শুরু করলেন। তারা সবাই মিলে তাই ১৯৮৫ সালে তৈরী করলেন মুক্ত সফটওয়্যার সংগঠন কিংবা Free Software Foundation, যার কাজ সফটওয়্যার ব্যবহারের স্বাধীনতার জন্য আন্দোলন করা এবং মুক্ত সফটওয়্যার সবার মাঝে ছড়িয়ে দেওয়া। স্টলম্যানের সাথে গ্ন্যু তৈরীর কাজে তাদের সবাই যোগ দিলেন।

১৯৯০ সালের দিকে মোটামুটি সব কাজ শেষ হয়ে গেলো, কেবল একটি কাজ বাদে। প্রত্যেকটা অপারেটিং সিস্টেমের সবচেয়ে গুরুত্বপূর্ণ অংশটির নাম হচ্ছে কার্নেল। কার্নেলের কাজ হচ্ছে সফটওয়্যারের সাথে হার্ডওয়্যারকে যুক্ত করা এবং যা রিসোর্স আছে তা ঠিকমত ব্যবহার করা। Mach মাইক্রোকার্নেলের উপর ভিত্তি করে গ্ন্যু এর কার্নেল Hurd বানানোর কাজ শুরু হলো, তার নেতৃত্বে মাইকেল বুশনেল। কিন্তু এ কাজ একটু ধীরগতিতে এগুতে লাগলো।
লিনাক্সের লোগো পেংগুইন

ইউনিক্স ভিত্তিক একটি কার্নেল ছিলো মিনিক্স, যা কেবলমাত্র শিক্ষামূলক উদ্দেশ্যে ব্যবহার করা যেতো। মিনিক্সের কোড সেসময় উন্মুক্ত থাকা সত্ত্বেও এর লাইসেন্সের কিছু বিধি-নিষেধের কারনে মিনিক্স পুরোপুরো মুক্ত সফটওয়্যার ছিলো না। যে বিশ্ববিদ্যালয়গুলো মিনিক্স ব্যবহার করতো তাদের একটি ছিলো ফিনল্যান্ডের হেলনিসকি বিশ্ববিদ্যালয়। হেলনিসকির এক ছাত্র ছিলেন লিনাস টরভাল্ডস। মিনিক্সের লাইসেন্স নিয়ে লিনাস বড়ই হতাশ ছিলেন, তাই তিনি ঠিক করলেন নিজেই একটি কার্নেল লিখে ফেলবেন। তার কাজ শুরু হলো এবং ১৯৯১ সালে চলে এলো লিনাস টরভাল্ডস এর তৈরী করা কার্নেল বিখ্যাত লিনাক্স।

লিনাক্স পুরোপুরি ইউনিক্স সিস্টেমের সাথে সামঞ্জস্যপূর্ণ ছিলো এবং ফ্রি সফটওয়্যার ফাউন্ডেশন দেখলো নতুন করে এখন হার্ড কার্নেল বানানোর কোন প্রয়োজনই নেই, কাজের উপযুক্ত একটি কার্নেল চলে এসেছে। তাই গ্ন্যু এর টুলগুলো লিনাক্সের সাথে যুক্ত করে ১৯৯২ সালে জন্ম হলো একটি একশভাগ অপারেটিং সিস্টেমের, GNU/Linux।

৪.
মুক্ত সফটওয়্যার ঠিক কাদের বলা হয় তা নিয়ে অনেকের দ্বিধাদ্বন্দ্ব রয়েছে। একটি বড় সংশয়ের কারন হলো ইংরেজি Free দিয়ে মুক্ত কিংবা স্বাধীন যেমন বুঝায় তেমন বিনামূল্যও বুঝানো যায়। একটা জিনিস তাই সম্পূর্ন ভাবে বলে রাখা উচিৎ যে Free Software মানে মুক্ত সফটওয়্যার, বিনামূল্যে পাওয়া সফটওয়্যার নয়। যেসব সফটওয়্যার মুক্ত কিংবা স্বাধীন ব্যবহারের উপযুক্ত নয় কিন্তু বিনামূল্যে পাওয়া যায় তাদের সঠিক নাম হচ্ছে Freeware।

তাহলে একটি সফটওয়্যারকে কখন মুক্ত সফটওয়্যার বলা হবে? তখনই যখন সেটি ব্যবহারকারীকে নিচের চারটি স্বাধীনতা দিয়ে থাকে।

    স্বাধীনতা ০: (কেন শূন্য থেকে শুরু হলো সেটি যাদের প্রোগ্রামিং জ্ঞান আছে তারা বুঝতে পারবে) তুমি যেকোন উদ্দেশ্যে সফটওয়্যারটি ব্যবহার করতে পারবে।

    স্বাধীনতা ১: তুমি নিজের মত সফটওয়্যারটি পরিবর্তন করতে পারবে (এর জন্য অবশ্যই সফটওয়্যারের সোর্স কোড মুক্ত থাকতে হবে)।

    স্বাধীনতা ২: তুমি সফটওয়্যারটির কপি অন্যদের মাঝে ইচ্ছেমত বিতরণ করতে পারবে।

    স্বাধীনতা ৩: তুমি সফটওয়্যারটির পরিবর্তিত কপিও ইচ্ছেমত অন্যদের মাঝে বিতরণ করতে পারবে।

এই চারটি হচ্ছে মুক্ত সফটওয়্যারের নীতি। এবার এদের আরেকটু পরিষ্কার করা যাক, বিশেষত শেষের দুটো কথা।

সফটওয়্যার নিজের ইচ্ছেমত বিতরণ করা মানে তাই, নিজের ইচ্ছেমত বিতরণ করা। কেউ যদি আমাদের কাছে এসে সফটওয়্যারের একটি কপি চায় এবং আমরা দিতে অস্বীকার করি তাহলে সেটা মুক্ত সফটওয়্যারের নীতিবিরুদ্ধ নয়। ভোটের সময় এলেই একটি পংক্তি টেলিভিশনে শুনা যায় যেটি আমরা এক্ষেত্রে ব্যবহার করতে পারি "আমার সফটওয়্যার আমি দেবো, যাকে খুশি তাকে দেবো"।

এবার একটি বড় ধাক্কা সকলের জন্য। মুক্ত সফটওয়্যার মানেই বিনামূল্যে পাওয়া সফটওয়্যার নয়!

কেউ যদি সফটওয়্যার বিতরণের জন্য কোন মূল্য নির্ধারন করতে চায় তাহলে অবশ্যই করতে পারে। কেউ যদি এই সফটওয়্যারটি ইন্টারনেট থেকে ডাউনলোড করে সিডিতে ঢুকিয়ে প্রতি কপি হাজার টাকায় বিক্রি করে তাহলেও কোন ক্ষতি নেই। কারন এই সফটওয়্যারটি নিয়ে যা খুশি তা করার অধিকার ব্যবহারকারীর আছে। সত্যি কথা বলতে কি, মুক্ত সফটওয়্যার সংগঠন এই কাজটি করতে উৎসাহ দেয়, কারন এতে পরবর্তীতে আরও কাজ করার জন্য অর্থ উঠে যায়।

যাদের এ নিয়ে মন একটু ইতস্তত করছে যে মুক্ত সফটওয়্যার আবার বিক্রি করে কেমন করে তাদের জন্য একটি ছোট গল্প বলা যাক। স্টলম্যান যখন Emacs প্রথম তৈরী করলেন তখন অনেকেই সফটওয়্যারটি ব্যবহার করার জন্য আগ্রহী হয়ে উঠলো। একটা এফ.টি.পি. সার্ভারে যদিও সফটওয়্যারটি স্টলম্যান রেখে দিয়েছিলেন সবার সেটায় প্রবেশ করার সুযোগ ছিলো না, সুতরাং তারা স্টলম্যানকে জিজ্ঞেস করলেন কেমন করে সফটওয়্যারটি পাওয়া যেতে পারে। স্টলম্যান মাত্র এম.আই.টি. তে চাকুরিটি ছেড়েছেন, টাকা পয়সার চিন্তা কিছুটা তো আছেই। তাই তিনি সবাইকে বললেন তাকে ১৫০ ডলার পাঠালেই তিনি একটি ডিস্কে ভরে সফটওয়্যারটি পাঠিয়ে দেবেন।

সত্যি কথা বলতে মুক্ত সফটওয়্যার বিক্রি করা ঠিক সম্ভব নয়, তাই এর দামকে বিক্রয় মূল্য না বলে বলা হয় বিতরণ মূল্য। মুক্ত সফটওয়্যার সংগঠনের আয়ের একটা বড় অংশ আশে সফটওয়্যার বিতরণ করার টাকা থেকে।

রিচার্ড স্টলম্যান যে উদ্দেশ্যে মুক্ত সফটওয়্যার আন্দোলন শুরু করেছিলেন তা হচ্ছে সকলের সফটওয়্যার ব্যবহারের স্বাধীনতা। তবে এই কমিউনিটির মাঝে একটা ছোট দ্বিমত তৈরী হলো, এবং ১৯৯৮ এর দিকে তাদের কয়েকজন 'মুক্ত সফটওয়্যার' এর বদলে 'ওপেন-সোর্স সফটওয়্যার' শব্দটি ব্যবহার করা শুরু করলেন।

বাইরে থেকে দেখলে মুক্ত সফটওয়্যার এবং ওপেস-সোর্স সফটওয়্যার প্রায় একই জিনিস। কিন্তু অর্থের দিক থেকে তারা এক নয়। মুক্ত সফটওয়্যার হচ্ছে সেগুলো যা ব্যবহার করার অধিকার সবার জন্য উন্মুক্ত। মুক্ত সফটওয়্যার আন্দোলন একটি সামাজিক ও রাজনৈতিক আন্দোলন, একটি বিভেদহীন সমাজ সৃষ্টি করার পথে পদক্ষেপ। ওপেন-সোর্সের কথা হচ্ছে যদি ব্যবহারকারীদের সফটওয়্যার উন্নত করার সুযোগ দেওয়া যায় তাহলে আরও ভালো এবং শক্তিশালী একটি সফটওয়্যার পাওয়া সম্ভব, তাই সফটওয়্যারের সোর্স কোডটি সবার জন্য ওপেন করে দাও। এটি সফটওয়্যার ডেভেলপ করার একটি পদ্ধতি।

মুক্ত সফটওয়্যার আদর্শ দ্বারা পরিচালিত একটি মানবিক আন্দোলন। ওপেস সোর্সের সমর্থকরা এর প্রচার করতে গিয়ে এই আদর্শগুলো তুলে ধরতে ভুলে যান। এবং এ নিয়েই মুক্ত সফটওয়্যার সংগঠনের আপত্তি। প্রোপ্রায়েটরি সফটওয়্যারকে মানুষ স্বাভাবিক সমাজব্যবস্থার অংশ হিসেবে মনে করতে শুরু করেছে, মুক্ত সফটওয়্যার আন্দোলনের উদ্দেশ্য তা ভেঙে দেওয়া। তাই যদি মনে করিয়ে দেওয়া না হয় কেন সফটওয়্যারের সোর্স কোড উন্মুক্ত, তাহলে মানুষ তাদের অধিকার সম্পর্কে সন্দিহান রয়ে যাবে।

তবে মুক্ত সফটওয়্যার এবং ওপেন-সোর্স একে অপরের শত্রু নয়। খুব সহজেই এই দুই দল একসাথে কাজ করতে পারে, কারন দিন শেষে তাদের গতিপথ এক। শত্রু ওরা যারা ব্যবহারকারীদের তারা কী ব্যবহার করছে তা জানতে এবং বাছাই করার পথ বন্ধ করে রেখেছে এবং মানুষকে আটকে রেখেছে সহযোগীতার পথ থেকে।

৫.
এ বিষয়টি এতক্ষনে পাঠকের পরিষ্কার হয়ে যাওয়ার কথা যে মুক্ত সফটওয়্যার আন্দোলন কেবলমাত্র সফটওয়্যারের স্বাধীনতার আন্দোলন নয়, সফটওয়্যারের 'পরাধীনতা'র বিরুদ্ধেও আন্দোলন।

তাহলে কেমন হবে যদি কোন সফটওয়্যার কোম্পানি একটি মুক্ত সফটওয়্যারকে পরিবর্তিত করে কিংবা অন্য কিছুর সাথে যুক্ত করে একটি প্রোপ্রায়েটরি সফটওয়্যার হিসেবে ব্যবহার করতে শুরু করে? খুবই বড় একটি বিভ্রান্তি তাহলে তৈরী হয়।

সত্যি বলতে এরকম ঘটনা বহুবার ঘটেছে। গ্ন্যু যে উইন্ডো সিস্টেমটি প্রথমে ব্যবহার করতো সেটা হচ্ছে এক্স উইন্ডো সিস্টেম। একটি উইন্ডো সিস্টেমের কাজ অপারেটিং সিস্টেমকে একইসাথে ডিসপ্লেতে আলাদা আলাদা অংশ ব্যবহার করতে দেওয়া। যাদের এ বিষয়ে সন্দেহ রয়েছে তাদের বলে রাখছি, উইন্ডো সিস্টেম এবং মাইক্রোসফটের উইন্ডোজ অপারেটিং সিস্টেম এক জিনিস নয়।

এক্স উইন্ডো সিস্টেমের কপিরাইট ছিলো উন্মুক্ত, অর্থাৎ যে যেভাবে হোক যেখানে হোক যা করেই হোক সফটওয়্যারটি ব্যবহার করতে পারবে। এধরনের সফটওয়্যারের উদ্দেশ্য ঠিক সফটওয়্যারের মুক্তি নয়, বরং অসংখ্য ব্যবহারকারী তৈরী করা। এবং কিছু ইউনিক্স সিস্টেম এক্সকে ব্যবহার করতে শুরু করলো একটি প্রোপ্রায়েটরি সফটওয়্যার হিসেবে। সুতরাং একে আর ঠিক মুক্ত সফটওয়্যার বলার সুযোগ রইলো না।

প্রোপ্রায়েটরি সফটওয়্যার ডেভেলপারদের এই সুযোগ না দেওয়ার জন্য তাই রিচার্ড স্টলম্যান একটি অসাধারন ধারনা তৈরী করলেন, যা কপিরাইট আইনকে ব্যবহার করে কিন্তু উল্টোভাবে। এর নাম দেওয়া হলো কপিলেফট।

সফটওয়্যার কপিলেফট করার মানে হলো এতে মুক্ত সফটওয়্যারের চারটি স্বাধীনতা অবশ্যই বজায় থাকবে। কিন্তু একটি নতুন শর্ত থাকবে, সেটি হচ্ছে 'ব্যবহারকারী সফটওয়্যারটি পরিবর্তন করে একটি প্রোপ্রায়েটরি সফটওয়্যার হিসেবে কিংবা এই সফটওয়্যারের কোন অংশ একটি প্রোপ্রায়েটরি সফটওয়্যারে ব্যবহার করতে পারবে না।'

খুব সহজে বলতে গেলে কপিলেফটের মানে হচ্ছে 'কারও সবকিছুর স্বাধীনতা নিশ্চিত করা, কেবল অপরের স্বাধীনতা ছিনিয়ে নেওয়ার অধিকার থেকে বঞ্চিত করা'। যেসব লাইসেন্স কপিলেফটের ধারনা ব্যবহার করে তাদের মধ্যে অন্যতম GNU General Public License।

নিজেদের যাত্রাপথে মুক্ত সফটওয়্যারকে অনেক বাঁধার সম্মুখীন হতে হয়েছে। যেমন খুব স্বাভাবিক একটি হলো, মুক্ত সফটওয়্যার কি সত্যিই নৈতিকতার প্রশ্ন কিংবা মানবিকতার বিষয়? সফটওয়্যার প্রোগ্রামারের বুদ্ধিমত্তা থেকে তৈরী তাই এটা কি ব্যক্তিগত সম্পত্তি নয়?

খুব সহজেই এই প্রশ্নের উত্তর দেওয়া যায় একটি উদাহরন থেকে। পাবলো পিকাসো অত্যন্ত বিখ্যাত একজন শিল্পী, অসংখ্য দামে তার শিল্পকর্ম বিক্রি হয় এবং যদি তিনি বেঁচে থাকতেন তাহলে সেই বিক্রির অধিকার তারই থাকতো। কিন্তু কেমন হবে যদি পাবলো পিকাসো তার আঁকার ধরনকে কপিরাইট করে দিতেন? কিংবা যদি আগাথা ক্রিস্টি গোয়েন্দা গল্পকে কপিরাইট করে নিতেন? কিংবা মাইকেল মধুসূদন বাংলা সনেট লেখার পদ্ধতিটাকে নিজের সম্পত্তি বলে দাবী করতেন?

তা হয় না। যে কেউ পাবলো পিকাসোর মত আঁকার চেষ্টা করে। সত্যি বলতে, কেউ পাবলো পিকাসোর কোন ছবি হুবহু এঁকে বিক্রি করলেও কোন ক্ষতি নেই, তবে তা অবশ্যই নিজের নামে। যদি পিকাসোর আঁকা ছবি বলে বিক্রি করা হয় তাহলে নিঃসন্দেহে এটা ধোঁকাবাজির অপরাধ।

এগিয়ে যাচ্ছে মুক্ত সফটওয়্যার সংগঠন। এফ.এস.এফ. এর তৈরী করা অসংখ্য শক্তিশালী সফটওয়্যার ইতোমধ্যেই আছে, সারা পৃথিবীর অসংখ্য মানুষ তাদের কাজে জেনে-না জেনে সাহায্য করে যাচ্ছেন। কারন সত্যিকারের শক্তি সহযোগীতায়। জ্ঞানচর্চার সুযোগ গুটিকয়েকজনের মাঝে সীমাবদ্ধ না রেখে যদি ছড়িয়ে দেওয়া হয় তাহলে নিঃসন্দেহে তা দিনে দিনে বাড়তে থাকবে।

কাজটা একেবারেই সহজ নয়। লিনাক্স কার্নেলের উপযোগীতা বাড়ানোর জন্য তার মাঝে কিছু অবমুক্ত অংশ যুক্ত করা হয়েছিলো, যার সাথে এফ.এস.এফ. পুরোপুরি একমত হতে পারেনি। তবে লিনাক্সের একেবারে মুক্ত একটি ভার্সনও আছে - লিনাক্স লিবরে। তার উপর লিনাক্সের সাথে জড়িত লোকজন লিনাক্সের উপর তৈরী করা অপারেটিং সিস্টেমগুলোকে বলে লিনাক্স, কিন্তু এফ.এস.এফ.  দাবী করে তাদের ডাকা উচিৎ গ্ন্যু/লিনাক্স। লিনাক্স ফাউন্ডেশন এবং ফ্রি সফটওয়্যার ফাউন্ডেশনের মাঝে তাই টক-ঝাল-মিষ্টি সম্পর্ক রয়েছে।

কিন্তু তবু লিনাক্স এবং গ্ন্যু কে কোনভাবেই দুঃসম্পর্কের আত্মীয় ভাবা যাবে না, তারা কাছের লোক। লিনাস টরভালডস যতটা না মুক্ত সফটওয়্যার তার চেয়ে বেশি ওপেন সোর্সের সমর্থক, কিন্তু তিনি নিজেই বলেছেন যদি গ্ন্যু ১৯৯২ এর আগে তাদের কার্নেলটি তৈরী করে ফেলতো তাহলে লিনাক্স তৈরীর কোন প্রয়োজন পড়তো না। মুক্ত সফটওয়্যার আন্দোলনের খুব বড় একটি অস্ত্র আজ গ্ন্যু/লিনাক্স।

প্রোপ্রায়েটরি সফটওয়্যার কোম্পানিগুলো এই আন্দোলনকে নিজেদের মত বাঁধা দেওয়ার চেষ্টা করা যাচ্ছে। অসংখ্য সফটওয়্যার আছে যেগুলো লিনাক্স ভিত্তিক অপারেটিং সিস্টেমে চালানোর জন্য উপযুক্ত নয়, অসংখ্য হার্ডওয়্যার নির্মাতা তাদের যন্ত্রাংশের গ্ন্যু/লিনাক্সের জন্য কোন সাপোর্ট দেয় না।

কিন্তু এক রিচার্ড স্টলম্যান আজ হাজার-হাজার হয়ে গেছেন, যাদের সবাই আন্দোলন করে যাচ্ছেন মুক্ত সফটওয়্যারের জন্য। স্টলম্যানের আজ আর ঘরে বসে প্রোগ্রাম করতে হয় না। তিনি সারা পৃথিবী ঘুরে বেড়ান এবং মুক্ত সফটওয়্যারের প্রচারণা করেন। মুক্তির আন্দোলনই তার কাছে বড়, তাই খুবই সাধারন তার জীবনযাপন। লম্বা সময় এম.আই.টি. তে তাকে দেওয়া অফিসকেই নিজের বাসা বানিয়ে রেখেছিলেন পনেরটি অনারারি ডক্টরেট এবং প্রফেসরশিপ পাওয়া মানুষটি। তার উৎসাহের কমতি দেখা যাচ্ছে না অবশ্য, কারনটা আমরা অনুমান করতে পারি।

কারন, মুক্ত হোক সফটওয়্যার।


* Free Software Foundation সম্পর্কে আরও জানার জন্য পাঠক http://www.fsf.org/ এবং http://www.gnu.org থেকে ঘুরে আসতে পারেন।
* ব্যবহার করা সকল পরিসংখ্যান উইকিপিডিয়া থেকে প্রাপ্ত। উৎসভেদে সেগুলো ভিন্ন হতে পারে।

লিনাক্সের বিশ বছর


লিনাক্স টরভাল্ডসের পর থেকে পুরো পৃথিবীর চারপাশে ব্যবহৃত হচ্ছে ওপেন সোর্স অপারেটিং সিস্টেম লিনাক্স। ডেস্কটপ থেকে স্মার্টফোন; সার্ভার থেকে সুপার কম্পিউটার কোথায় নেই লিনাক্স?

এই বছর লিনাক্স ফাউন্ডেশন পালন করছে লিনাক্সের ২০ বছর। ভয়ানক পেঙ্গুইনের ইতিহাস খুব সুন্দর ভাবে বর্ণনা করা হয়েছে এই ছোট্ট ভিডিওটিতে।


 মুহম্মদ জাফর ইকবাল স্যার তাঁর লাবু এলো শহরে বইতে লিনাক্সকে খুব সুন্দর একটা নাম দিয়েছিলেন, সেটা হচ্ছে বাঘের বাচ্চা অপারেটিং সিস্টেম। বেঁচে থাকুক বাঘের বাচ্চা অপারেটিং সিস্টেম, বড় হোক আরও।

অ্যালগরিদম কাহারে বলে (What is Algorithm, eh?)


সন্তু আর জোজো দুই বন্ধু (সুনীল গঙ্গোপাধ্যায়ের কাকাবাবু পড়েন নাই?)। একদিন তারা গাছের উপর বসে আছে। ঝিরিঝিরি বাতাস, গাছের ডালে শান্তিপূর্ণ পরিবেশ। সন্তুর হাতে দুটো আপেল। জোজোর হাতে একটা চাকু। হঠাৎ কি মনে করে সন্তু বলল, “দে দেখি তোর চাকুটা, আপেল কাঁটি।“

        জোজা চাকুটা এগিয়ে দিল, “দশটা টুকরা কর দেখি।“

        “দশটা টুকরো কেন?”

        “বাবা যে গতমাসে স্পেনে গিয়েছিল, সেখানে ফুটবলার রোনালদো এসেছিল হাত দেখাতে। রোনালদোই বলেছে আপেল দশ টুকরো করে খাওয়া স্বাস্থ্যকর।“

কাকাবাবুর বইয়ের পাঠকদের দায় পরের কাহিনী আঁচ করা। আপাতত আপনাদের কাছে আমার প্রশ্ন, “সন্তু কেমন করে আপেলটাকে দশটা টুকরো করবে?”

আমি জানি আপনাদের মাঝে কেউ কেউ বলবেন, “এইটা কেমন ফালতু প্রশ্ন? সন্তু কি তোমার মত বেকুব নাকি যে আপেল দশটা টুকরা করতে পারবে না?” কিন্তু বিশ্বাস করুন, একটা আপেল দশ টুকরো করা মোটেও সহজ কাজ নয়।


প্রথম পদ্ধতি
১. সন্তু আপেলে একটা পোঁচ দেবে চাকু দিয়ে।
২. গুণে দেখবে দশ টুকরো হলো কি না।
৩. যদি হয়ে থাকে, তাহলে কাজ শেষ।
৪. যদি না হয়, প্রথম ধাপে ফিরে যাবে।



দ্বিতীয় পদ্ধতি
১. সন্তু বের করবে দশ একটা জোড় সংখ্যা।
২. আপেলে ১০ কে দুই দিয়ে ভাগ করলে পাঁচ হয় এবং চাকু দিয়ে পাঁচটি পোঁচ দেবে।



অতএব আপেলকে দশ টুকরো করার মাঝেও অনেক উপায় আছে। তবু আমাদের সন্তু যথেষ্ট বুদ্ধিমান ব্যক্তি হলে নিশ্চয়ই দ্বিতীয় পদ্ধতি ছেড়ে প্রথম পদ্ধতি নিতে যাবে না। কিন্তু এ ব্যাপারে কোন আপত্তি থাকার কথা নয়, দুই উপায়েই আপেলকে সফল ভাবে দশ টুকরো করা সম্ভব।

কোন কাজ করার এই যে ধারাবাহিক নির্দেশনা, তার খটমটে নামও আছে একটা, অ্যালগরিদম(Algorithm)। আমাদের চারপাশে অসংখ্যা অ্যালগরিদম আছে। আপনি চাবি দিয়ে তালা খুলতে চান কি গণিত করতে চান, অ্যালগরিদম ঠিক ঢুকে যাবে।

যা হোক, আপেল কাঁটার অ্যালগরিদম ব্যবহার করে সন্তু আপেল দশ টুকরো করুক, আমরা এই ফাঁকে গণিত নিয়ে কিছু কথা বলে ফেলি।

গাণিতিক অ্যালগরিদমের সাথে সকলেই আমরা কমবেশি পরিচিত। ছোটক্লাসে থাকতে সবাই নিশ্চয় ভাগ করে করে গ.সা.গু. বের করেছি, ওটাই গাণিতিক অ্যালগরিদমের একখানা উদাহরন। সত্যি বলতে কি, অত্যন্ত চমৎকার উদাহরন, কারণ ঐ অ্যালগরিদমটি বেশ নামকরা। নামটা হচ্ছে ইউক্লিডের অ্যালগরিদম। দুটি সংখ্যার গ.সা.গু. ইউক্লিডের অ্যালগরিদম এভাবে বের করতে পারে-


ইউক্লিডের অ্যালগরিদম

১. ছোট সংখ্যাটি দিয়ে বড়টিকে ভাগ করতে হবে।
২. ভাগশেষ শূন্য হলে যা দিয়ে ভাগ করা হয়েছে তাই গ.সা.গু।
৩. ভাগশেষ শূন্য না হলে প্রথমে যে সংখ্যাটি দিয়ে আমরা ভাগ করেছি, তাকে ভাগশেষ দিয়ে ভাগ করতে হবে।
৪. ২য় ধাপে ফিরে যেতে হবে।



ইউক্লিডের অ্যালগরিদম কেমন করে কাজ করে, তা নাহয় নাই বললাম। কিন্তু কাজ যে করে সে ব্যাপারে সবাই আমরা নিশ্চিত, কারন এককালে অনেকবার অ্যালগরিদমটা আমরা ব্যবহার করেছি।

গণিতে অ্যালগরিদম আমরা আরও অনেক ব্যবহার করি, সবগুলো বলতে গেলে ছোটখাট বিশ্বকোষ হয়ে যাবে। শুধু গণিত নয়, বিজ্ঞানেও অ্যালগরিদমের জয়জয়কার। যেমন ধরা যাক, ল্যাবরেটরিতে একটা নাম না জানা লবন কি কি মূলক দ্বারা গঠিত তা বের করার যে পরীক্ষাটি আছে, সেটি চমৎকার একটি অ্যালগরিদম। প্রথমে লবনের সাথে একটি যৌগের বিক্রিয়া করতে হয়। তাহলে বিক্রিয়া কেমন হলো তা দেখে লবনের প্রকৃতি সম্পর্কে কিছুটা ধারনা পাওয়া যায়। সেই ধারনাকে কাজে লাগিয়ে আরেকটি বিক্রিয়া করানো হয়, আবার কিছুটা ধারনা পাওয়া যায়। এভাবে ধাপে ধাপে নতুন নতুন তথ্য বের করতে করতে আমরা লবনের নামটি পেয়ে যাই।

তবে অ্যালগরিদমের সবচেয়ে শক্তিশালী ক্ষেত্র হচ্ছে কম্পিউটার। কম্পিউটার প্রোগ্রাম বানাতে গেলে অ্যালগরিদম আসবেই আসবে। সত্যি বলতে কি, কম্পিউটার এই অ্যালগরিদমের সাহায্যেই সব কাজ করে।

কম্পিউটারের যান্ত্রিক মস্তিষ্ক সুনিপুণ ভাবে কিছু করতে পারে যখন ওকে নিখুঁত ভাবে বলে দেওয়া হয় কেমন করে কাজটি করতে হবে। মানে, অ্যালগরিদমটি যখন কম্পিউটারের জানা থাকে, তখনই সে একটি কাজ করতে পারে।

এত ঝামেলার মাঝে না গিয়ে আমরা একটা উদাহরন দিয়ে ফেলি। ধরা যাক কম্পিউটারে একটা প্রোগ্রাম লিখা হল কোন সংখ্যা মৌলিক না যৌগিক জানার জন্য। অ্যালগরিদমটি কাজ করে এভাবে।


 মৌলিক সংখ্যা বের করার অ্যালগরিদম
১. একটি সংখ্যা নিয়ে শুরু করতে হবে(একেবারে প্রথমে সংখ্যাটি নেওয়া হবে ২, পরে অ্যালগরিদম আস্তে আস্তে সংখ্যাটি বদলাতে শুরু করবে)।
২.  ইনপুটে দেওয়া সংখ্যাটি(মানে যেটি মৌলিক না যৌগিক বের করতে হবে) কম্পিউটারের বাছাই করা সংখ্যাটির সমান না ছোট দেখতে হবে।
৩. সমান হলে ইনপুটের সংখ্যাটি মৌলিক(১ হলে অবশ্য অন্য কথা, সেই অংশ বাদ দিই আপাতত)।
৪. ছোট হলে বাছাই করা সংখ্যাটি দিয়ে ইনপুটের সংখ্যাটিকে ভাগ করলে ভাগশেষ কত হয় তা বের করতে হবে।
৫. ভাগশেষ শূন্য হলে ইনপুটের সংখ্যাটি যৌগিক।
৬. ভাগশেষ শূন্য হলে বাছাই করা সংখ্যাটির সাথে ১ যোগ করে নতুন আরেকটি সংখ্যা বাছাই করতে হবে।
৭. দ্বিতীয় ধাপে ফিরে যেতে হবে।



আমাদের দেওয়া এই অ্যালগরিদমটি বারবার ব্যবহার করে কম্পিউটার ইনপুটের সংখ্যাটি মৌলিক না যৌগিক, তা ঠিকই বের করে ফেলতে পারবে! বিশ্বাস না হলে প্রোগ্রাম লিখে দেখতে পারেন।

এই অ্যালগরিদমটা খুবই সহজ নিয়ম অনুসরন করে। প্রাইম নাম্বার বা মৌলিক সংখ্যা বের করার জন্য আরেকটি অ্যালগরিদম আসুন বানিয়ে ফেলি। এই অ্যালগরিদমটি উইলসনের থিওরেম ব্যবহার করবে। উইলিসনের থিওরেমটি হচ্ছে-



যদি কোন সংখ্যা থেকে ছোট সবগুলো সংখ্যার গুণফল এর সাথে ১ যোগ করে ঐ সংখ্যাটি দিয়ে ভাগ করলে ভাগশেষ শূন্য হয়, তবে সংখ্যাটি মৌলিক।

গণিতের ভাষায়, P মৌলিক হবে যদি ও কেবল যদি 

(P-1)! ≡ -1(mod p)

অ্যালগরিদমটি লিখে ফেলা যাক। আমরা ধরে নিতে পারি যে সংখ্যাটি মৌলিক কি যৌগিক বের করতে হবে সেটি হচ্ছে P।


উইলসনের থিওরেম ব্যবহার করে প্রাইম নাম্বার বের করার অ্যালগরিদম
১. p এর থেকে ছোট সবগুলো সংখ্যার গুণফল বের করতে হবে(এই কাজটি করার জন্যও একটি অ্যালগরিদম দরকার, সেটা আপাতত নাই দিলাম)।
২. গুণফলের সাথে ১ যোগ করতে হবে।
৩. ১ যোগ করে p দিয়ে ভাগ করতে ভাগশেষ কত হয় তা বের করতে হবে।
৪. ভাগশেষ শূন্য হলে সংখ্যাটি মৌলিক।
৫. ভাগশেষ শূন্য না হলে সংখ্যাটি যৌগিক।


সহজ ভাষায় এই হচ্ছে অ্যালগরিদম।

অ্যালগরিদম নানা রঙের হতে পারে, নানা ঢঙের হতে পারে। একই কাজ করার বিভিন্ন অ্যালগরিদম থাকতে পারে, কোনটা ছোট, কোনটা বড়। কম্পিউটার প্রোগ্রামাররা সবসময় চেষ্টা করেন এমন সব অ্যালগরিদম ব্যবহার করতে যেগুলো ব্যবহার করতে কম্পিউটারের সবচেয়ে কম সময় লাগবে। অ্যালগরিদমের সময় নিয়ে অনেক মজার মজার সমস্যা সৃষ্টি হয়েছে, কিন্তু সেসব এখন থাকুক পড়ে অন্য কোথাও।

কণাবাদী গণনাযন্ত্র (QUANTUM COMPUTER)



কোয়ান্টাম কম্পিউটার নিয়ে কথা বলার আগে বলে রাখা ভালো যে দুই বিষয়েই আমার জ্ঞান ভাসাভাসা। অর্থাৎ, ভূলত্রুটি হতেই পারে ব্যাখ্যা করতে গিয়ে। তাই পাঠকের উচিৎ একশভাগ বিশ্বাস লেখাটাকে না করা। তবে, যেহেতু আমি জটিল কোন অংশে যাচ্ছি না তাই আশা করা যায় ভূল হবে না। আর কারও কারও নাম নিয়ে আপত্তি থাকলে আমার কিছু করার নেই, Quantum Computer এর জন্য কণাবাদী গণনাযন্ত্র ছাড়া অন্য কোন ভালো বঙ্গানুবাদ পেলাম না।
যা হোক, আসল কথায় আসা যাক। কেউ যদি চাচা চৌধুরীর কমিকস পড়ে থাকে তাহলে জানে কাটুনিস্ট প্রাণ বারবার একটা কথা সবাইকে মনে করিয়ে দিয়েছেন, যা হলো চাচা চৌধুরীর বুদ্ধি কম্পিউটারের চেয়ে প্রখর। এ থেকে দুটি তথ্য পাওয়া যায়।
1. কার্টুনিস্ট তার চরিত্রকে ভয়ানক বুদ্ধিমান প্রমাণ করতে চেয়েছেন।
২. তিনি সফল হতে পারেননি।
হ্যা, তিনি সফল হতে পারেননি। কারণ আমাদের যে কারও বুদ্ধি